package org.apache.james.mime4j.field.address.parser;

import [I;
import java.io.InputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Vector;

public class AddressListParser
  implements AddressListParserTreeConstants, AddressListParserConstants
{
  private static int[] jj_la1_0;
  private static int[] jj_la1_1;
  private final JJCalls[] jj_2_rtns;
  private int jj_endpos;
  private Vector jj_expentries;
  private int[] jj_expentry;
  private int jj_gc;
  private int jj_gen;
  SimpleCharStream jj_input_stream;
  private int jj_kind;
  private int jj_la;
  private final int[] jj_la1;
  private Token jj_lastpos;
  private int[] jj_lasttokens;
  private final LookaheadSuccess jj_ls;
  public Token jj_nt;
  private int jj_ntk;
  private boolean jj_rescan;
  private Token jj_scanpos;
  private boolean jj_semLA;
  protected JJTAddressListParserState jjtree;
  public boolean lookingAhead;
  public Token token;
  public AddressListParserTokenManager token_source;

  static
  {
    jj_la1_0();
    jj_la1_1();
  }

  public AddressListParser(InputStream paramInputStream)
  {
    this(paramInputStream, null);
  }

  public AddressListParser(InputStream paramInputStream, String paramString)
  {
    this.jjtree = new JJTAddressListParserState();
    this.lookingAhead = false;
    this.jj_la1 = new int[22];
    this.jj_2_rtns = new JJCalls[2];
    this.jj_rescan = false;
    this.jj_gc = 0;
    this.jj_ls = new LookaheadSuccess(null);
    this.jj_expentries = new Vector();
    this.jj_kind = -1;
    this.jj_lasttokens = new int[100];
    try
    {
      this.jj_input_stream = new SimpleCharStream(paramInputStream, paramString, 1, 1);
      this.token_source = new AddressListParserTokenManager(this.jj_input_stream);
      this.token = new Token();
      this.jj_ntk = -1;
      this.jj_gen = 0;
      int i = 0;
      if (i < 22)
      {
        this.jj_la1[i] = -1;
        ++i;
      }
    }
    catch (UnsupportedEncodingException localUnsupportedEncodingException)
    {
      throw new RuntimeException(localUnsupportedEncodingException);
    }
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  public AddressListParser(Reader paramReader)
  {
    this.jjtree = new JJTAddressListParserState();
    this.lookingAhead = false;
    this.jj_la1 = new int[22];
    this.jj_2_rtns = new JJCalls[2];
    this.jj_rescan = false;
    this.jj_gc = 0;
    this.jj_ls = new LookaheadSuccess(null);
    this.jj_expentries = new Vector();
    this.jj_kind = -1;
    this.jj_lasttokens = new int[100];
    this.jj_input_stream = new SimpleCharStream(paramReader, 1, 1);
    this.token_source = new AddressListParserTokenManager(this.jj_input_stream);
    this.token = new Token();
    this.jj_ntk = -1;
    this.jj_gen = 0;
    for (int i = 0; i < 22; ++i)
      this.jj_la1[i] = -1;
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  public AddressListParser(AddressListParserTokenManager paramAddressListParserTokenManager)
  {
    this.jjtree = new JJTAddressListParserState();
    this.lookingAhead = false;
    this.jj_la1 = new int[22];
    this.jj_2_rtns = new JJCalls[2];
    this.jj_rescan = false;
    this.jj_gc = 0;
    this.jj_ls = new LookaheadSuccess(null);
    this.jj_expentries = new Vector();
    this.jj_kind = -1;
    this.jj_lasttokens = new int[100];
    this.token_source = paramAddressListParserTokenManager;
    this.token = new Token();
    this.jj_ntk = -1;
    this.jj_gen = 0;
    for (int i = 0; i < 22; ++i)
      this.jj_la1[i] = -1;
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  // ERROR //
  private final boolean jj_2_1(int paramInt)
  {
    // Byte code:
    //   0: aload_0
    //   1: iload_1
    //   2: putfield 132	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la	I
    //   5: aload_0
    //   6: getfield 113	org/apache/james/mime4j/field/address/parser/AddressListParser:token	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   9: astore_2
    //   10: aload_0
    //   11: aload_2
    //   12: putfield 134	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_scanpos	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   15: aload_0
    //   16: aload_2
    //   17: putfield 136	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_lastpos	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   20: aload_0
    //   21: invokespecial 140	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_3_1	()Z
    //   24: istore 6
    //   26: iload 6
    //   28: ifne +15 -> 43
    //   31: iconst_1
    //   32: istore 5
    //   34: aload_0
    //   35: iconst_0
    //   36: iload_1
    //   37: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   40: iload 5
    //   42: ireturn
    //   43: iconst_0
    //   44: istore 5
    //   46: goto -12 -> 34
    //   49: astore 4
    //   51: aload_0
    //   52: iconst_0
    //   53: iload_1
    //   54: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   57: iconst_1
    //   58: istore 5
    //   60: goto -20 -> 40
    //   63: astore_3
    //   64: aload_0
    //   65: iconst_0
    //   66: iload_1
    //   67: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   70: aload_3
    //   71: athrow
    //
    // Exception table:
    //   from	to	target	type
    //   20	26	49	org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess
    //   20	26	63	finally
  }

  // ERROR //
  private final boolean jj_2_2(int paramInt)
  {
    // Byte code:
    //   0: aload_0
    //   1: iload_1
    //   2: putfield 132	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la	I
    //   5: aload_0
    //   6: getfield 113	org/apache/james/mime4j/field/address/parser/AddressListParser:token	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   9: astore_2
    //   10: aload_0
    //   11: aload_2
    //   12: putfield 134	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_scanpos	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   15: aload_0
    //   16: aload_2
    //   17: putfield 136	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_lastpos	Lorg/apache/james/mime4j/field/address/parser/Token;
    //   20: aload_0
    //   21: invokespecial 148	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_3_2	()Z
    //   24: istore 6
    //   26: iload 6
    //   28: ifne +15 -> 43
    //   31: iconst_1
    //   32: istore 5
    //   34: aload_0
    //   35: iconst_1
    //   36: iload_1
    //   37: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   40: iload 5
    //   42: ireturn
    //   43: iconst_0
    //   44: istore 5
    //   46: goto -12 -> 34
    //   49: astore 4
    //   51: aload_0
    //   52: iconst_1
    //   53: iload_1
    //   54: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   57: iconst_1
    //   58: istore 5
    //   60: goto -20 -> 40
    //   63: astore_3
    //   64: aload_0
    //   65: iconst_1
    //   66: iload_1
    //   67: invokespecial 144	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_save	(II)V
    //   70: aload_3
    //   71: athrow
    //
    // Exception table:
    //   from	to	target	type
    //   20	26	49	org/apache/james/mime4j/field/address/parser/AddressListParser$LookaheadSuccess
    //   20	26	63	finally
  }

  private final boolean jj_3R_10()
  {
    int i;
    Token localToken = this.jj_scanpos;
    if (jj_3R_12())
    {
      this.jj_scanpos = localToken;
      if (jj_scan_token(18))
        i = 1;
    }
    while (true)
    {
      return i;
      i = 0;
    }
  }

  private final boolean jj_3R_11()
  {
    int i;
    Token localToken1 = this.jj_scanpos;
    if (jj_scan_token(9))
      this.jj_scanpos = localToken1;
    Token localToken2 = this.jj_scanpos;
    if (jj_scan_token(14))
    {
      this.jj_scanpos = localToken2;
      if (jj_scan_token(31))
        i = 1;
    }
    while (true)
    {
      return i;
      i = 0;
    }
  }

  private final boolean jj_3R_12()
  {
    int i;
    if (jj_scan_token(14))
      i = 1;
    while (true)
    {
      Token localToken;
      return i;
      do
        localToken = this.jj_scanpos;
      while (!(jj_3R_13()));
      this.jj_scanpos = localToken;
      i = 0;
    }
  }

  private final boolean jj_3R_13()
  {
    int i;
    Token localToken = this.jj_scanpos;
    if (jj_scan_token(9))
      this.jj_scanpos = localToken;
    if (jj_scan_token(14))
      i = 1;
    while (true)
    {
      return i;
      i = 0;
    }
  }

  private final boolean jj_3R_8()
  {
    int i;
    if (jj_3R_9())
      i = 1;
    while (true)
    {
      while (true)
      {
        while (true)
        {
          return i;
          if (!(jj_scan_token(8)))
            break;
          i = 1;
        }
        if (!(jj_3R_10()))
          break;
        i = 1;
      }
      i = 0;
    }
  }

  private final boolean jj_3R_9()
  {
    int i;
    Token localToken1 = this.jj_scanpos;
    if (jj_scan_token(14))
    {
      this.jj_scanpos = localToken1;
      if (jj_scan_token(31))
        i = 1;
    }
    while (true)
    {
      Token localToken2;
      return i;
      do
        localToken2 = this.jj_scanpos;
      while (!(jj_3R_11()));
      this.jj_scanpos = localToken2;
      i = 0;
    }
  }

  private final boolean jj_3_1()
  {
    int i;
    if (jj_3R_8())
      i = 1;
    while (true)
    {
      return i;
      i = 0;
    }
  }

  private final boolean jj_3_2()
  {
    int i;
    if (jj_3R_8())
      i = 1;
    while (true)
    {
      return i;
      i = 0;
    }
  }

  private void jj_add_error_token(int paramInt1, int paramInt2)
  {
    int[] arrayOfInt2;
    if (paramInt2 >= 100);
    do
      while (true)
      {
        return;
        if (paramInt2 != 1 + this.jj_endpos)
          break;
        int[] arrayOfInt3 = this.jj_lasttokens;
        int l = this.jj_endpos;
        this.jj_endpos = (l + 1);
        arrayOfInt3[l] = paramInt1;
      }
    while (this.jj_endpos == 0);
    this.jj_expentry = new int[this.jj_endpos];
    for (int i = 0; i < this.jj_endpos; ++i)
      this.jj_expentry[i] = this.jj_lasttokens[i];
    int j = 0;
    Enumeration localEnumeration = this.jj_expentries.elements();
    do
    {
      if (!(localEnumeration.hasMoreElements()))
        break label178;
      arrayOfInt2 = (int[])(int[])localEnumeration.nextElement();
    }
    while (arrayOfInt2.length != this.jj_expentry.length);
    j = 1;
    int k = 0;
    while (true)
    {
      while (true)
      {
        do
        {
          do
            if (k < this.jj_expentry.length)
            {
              if (arrayOfInt2[k] == this.jj_expentry[k])
                break label219;
              j = 0;
            }
          while (j == 0);
          if (j == 0)
            label178: this.jj_expentries.addElement(this.jj_expentry);
        }
        while (paramInt2 == 0);
        int[] arrayOfInt1 = this.jj_lasttokens;
        this.jj_endpos = paramInt2;
        arrayOfInt1[(paramInt2 - 1)] = paramInt1;
      }
      label219: ++k;
    }
  }

  private final Token jj_consume_token(int paramInt)
    throws ParseException
  {
    int j;
    Token localToken1 = this.token;
    if (localToken1.next != null)
    {
      this.token = this.token.next;
      this.jj_ntk = -1;
      if (this.token.kind != paramInt)
        break label171;
      this.jj_gen = (1 + this.jj_gen);
      int i = 1 + this.jj_gc;
      this.jj_gc = i;
      if (i <= 100)
        break label166;
      this.jj_gc = 0;
      j = 0;
    }
    while (true)
    {
      while (true)
      {
        if (j >= this.jj_2_rtns.length)
          break label166;
        JJCalls localJJCalls = this.jj_2_rtns[j];
        while (true)
        {
          if (localJJCalls == null)
            break label160;
          if (localJJCalls.gen < this.jj_gen)
            localJJCalls.first = null;
          localJJCalls = localJJCalls.next;
        }
        Token localToken2 = this.token;
        Token localToken3 = this.token_source.getNextToken();
        localToken2.next = localToken3;
        this.token = localToken3;
      }
      label160: ++j;
    }
    label166: return this.token;
    label171: this.token = localToken1;
    this.jj_kind = paramInt;
    throw generateParseException();
  }

  private static void jj_la1_0()
  {
    int[] arrayOfInt = new int[22];
    arrayOfInt[0] = 2;
    arrayOfInt[1] = -2147467200;
    arrayOfInt[2] = 8;
    arrayOfInt[3] = -2147467200;
    arrayOfInt[4] = 80;
    arrayOfInt[5] = -2147467200;
    arrayOfInt[6] = -2147467200;
    arrayOfInt[7] = -2147467200;
    arrayOfInt[8] = 8;
    arrayOfInt[9] = -2147467200;
    arrayOfInt[10] = 256;
    arrayOfInt[11] = 264;
    arrayOfInt[12] = 8;
    arrayOfInt[13] = -2147467264;
    arrayOfInt[14] = -2147467264;
    arrayOfInt[15] = -2147467264;
    arrayOfInt[16] = -2147466752;
    arrayOfInt[17] = 512;
    arrayOfInt[18] = -2147467264;
    arrayOfInt[19] = 16896;
    arrayOfInt[20] = 512;
    arrayOfInt[21] = 278528;
    jj_la1_0 = arrayOfInt;
  }

  private static void jj_la1_1()
  {
    int[] arrayOfInt = new int[22];
    arrayOfInt[0] = 0;
    arrayOfInt[1] = 0;
    arrayOfInt[2] = 0;
    arrayOfInt[3] = 0;
    arrayOfInt[4] = 0;
    arrayOfInt[5] = 0;
    arrayOfInt[6] = 0;
    arrayOfInt[7] = 0;
    arrayOfInt[8] = 0;
    arrayOfInt[9] = 0;
    arrayOfInt[10] = 0;
    arrayOfInt[11] = 0;
    arrayOfInt[12] = 0;
    arrayOfInt[13] = 0;
    arrayOfInt[14] = 0;
    arrayOfInt[15] = 0;
    arrayOfInt[16] = 0;
    arrayOfInt[17] = 0;
    arrayOfInt[18] = 0;
    arrayOfInt[19] = 0;
    arrayOfInt[20] = 0;
    arrayOfInt[21] = 0;
    jj_la1_1 = arrayOfInt;
  }

  private final int jj_ntk()
  {
    int i;
    Token localToken1 = this.token.next;
    this.jj_nt = localToken1;
    if (localToken1 == null)
    {
      Token localToken2 = this.token;
      Token localToken3 = this.token_source.getNextToken();
      localToken2.next = localToken3;
      i = localToken3.kind;
      this.jj_ntk = i;
    }
    while (true)
    {
      return i;
      i = this.jj_nt.kind;
      this.jj_ntk = i;
    }
  }

  private final void jj_rescan_token()
  {
    this.jj_rescan = true;
    int i = 0;
    if (i < 2);
    try
    {
      JJCalls localJJCalls = this.jj_2_rtns[i];
      if (localJJCalls.gen > this.jj_gen)
      {
        this.jj_la = localJJCalls.arg;
        Token localToken = localJJCalls.first;
        this.jj_scanpos = localToken;
        this.jj_lastpos = localToken;
        switch (i)
        {
        default:
        case 0:
        case 1:
        }
      }
      while (true)
      {
        while (true)
        {
          do
            localJJCalls = localJJCalls.next;
          while (localJJCalls != null);
          break label114:
          jj_3_1();
        }
        jj_3_2();
      }
      this.jj_rescan = false;
      return;
      label114: ++i;
    }
    catch (LookaheadSuccess localLookaheadSuccess)
    {
      break label114:
    }
  }

  private final void jj_save(int paramInt1, int paramInt2)
  {
    Object localObject = this.jj_2_rtns[paramInt1];
    while (true)
    {
      if (((JJCalls)localObject).gen > this.jj_gen)
      {
        if (((JJCalls)localObject).next != null)
          break label72;
        JJCalls localJJCalls = new JJCalls();
        ((JJCalls)localObject).next = localJJCalls;
        localObject = localJJCalls;
      }
      ((JJCalls)localObject).gen = (paramInt2 + this.jj_gen - this.jj_la);
      ((JJCalls)localObject).first = this.token;
      ((JJCalls)localObject).arg = paramInt2;
      return;
      label72: localObject = ((JJCalls)localObject).next;
    }
  }

  private final boolean jj_scan_token(int paramInt)
  {
    label145: label156: int i;
    int j;
    Token localToken1;
    if (this.jj_scanpos == this.jj_lastpos)
    {
      this.jj_la -= 1;
      if (this.jj_scanpos.next == null)
      {
        Token localToken3 = this.jj_scanpos;
        Token localToken4 = this.token_source.getNextToken();
        localToken3.next = localToken4;
        this.jj_scanpos = localToken4;
        this.jj_lastpos = localToken4;
      }
    }
    while (true)
    {
      while (true)
      {
        if (!(this.jj_rescan))
          break label156;
        j = 0;
        localToken1 = this.token;
        while (true)
        {
          if ((localToken1 == null) || (localToken1 == this.jj_scanpos))
            break label145;
          ++j;
          localToken1 = localToken1.next;
        }
        Token localToken2 = this.jj_scanpos.next;
        this.jj_scanpos = localToken2;
        this.jj_lastpos = localToken2;
      }
      this.jj_scanpos = this.jj_scanpos.next;
    }
    if (localToken1 != null)
      jj_add_error_token(paramInt, j);
    if (this.jj_scanpos.kind != paramInt)
      i = 1;
    while (true)
    {
      return i;
      if ((this.jj_la == 0) && (this.jj_scanpos == this.jj_lastpos))
        throw this.jj_ls;
      i = 0;
    }
  }

  private static void log(String paramString)
  {
    System.out.print(paramString);
  }

  public static void main(String[] paramArrayOfString)
    throws ParseException
  {
    AddressListParser localAddressListParser;
    try
    {
      localAddressListParser = new AddressListParser(System.in);
      localAddressListParser.parseLine();
      ((SimpleNode)localAddressListParser.jjtree.rootNode()).dump("> ");
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }

  public void ReInit(InputStream paramInputStream)
  {
    ReInit(paramInputStream, null);
  }

  public void ReInit(InputStream paramInputStream, String paramString)
  {
    try
    {
      this.jj_input_stream.ReInit(paramInputStream, paramString, 1, 1);
      this.token_source.ReInit(this.jj_input_stream);
      this.token = new Token();
      this.jj_ntk = -1;
      this.jjtree.reset();
      this.jj_gen = 0;
      int i = 0;
      if (i < 22)
      {
        this.jj_la1[i] = -1;
        ++i;
      }
    }
    catch (UnsupportedEncodingException localUnsupportedEncodingException)
    {
      throw new RuntimeException(localUnsupportedEncodingException);
    }
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  public void ReInit(Reader paramReader)
  {
    this.jj_input_stream.ReInit(paramReader, 1, 1);
    this.token_source.ReInit(this.jj_input_stream);
    this.token = new Token();
    this.jj_ntk = -1;
    this.jjtree.reset();
    this.jj_gen = 0;
    for (int i = 0; i < 22; ++i)
      this.jj_la1[i] = -1;
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  public void ReInit(AddressListParserTokenManager paramAddressListParserTokenManager)
  {
    this.token_source = paramAddressListParserTokenManager;
    this.token = new Token();
    this.jj_ntk = -1;
    this.jjtree.reset();
    this.jj_gen = 0;
    for (int i = 0; i < 22; ++i)
      this.jj_la1[i] = -1;
    for (int j = 0; j < this.jj_2_rtns.length; ++j)
      this.jj_2_rtns[j] = new JJCalls();
  }

  // ERROR //
  public final void addr_spec()
    throws ParseException
  {
    // Byte code:
    //   0: new 293	org/apache/james/mime4j/field/address/parser/ASTaddr_spec
    //   3: dup
    //   4: bipush 9
    //   6: invokespecial 296	org/apache/james/mime4j/field/address/parser/ASTaddr_spec:<init>	(I)V
    //   9: astore_1
    //   10: iconst_1
    //   11: istore_2
    //   12: aload_0
    //   13: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   16: aload_1
    //   17: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   20: aload_0
    //   21: aload_1
    //   22: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   25: aload_0
    //   26: invokevirtual 306	org/apache/james/mime4j/field/address/parser/AddressListParser:local_part	()V
    //   29: aload_0
    //   30: bipush 8
    //   32: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   35: pop
    //   36: aload_0
    //   37: invokevirtual 311	org/apache/james/mime4j/field/address/parser/AddressListParser:domain	()V
    //   40: iload_2
    //   41: ifeq +17 -> 58
    //   44: aload_0
    //   45: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   48: aload_1
    //   49: iconst_1
    //   50: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   53: aload_0
    //   54: aload_1
    //   55: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   58: return
    //   59: astore 4
    //   61: iload_2
    //   62: ifeq +48 -> 110
    //   65: aload_0
    //   66: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   69: aload_1
    //   70: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   73: iconst_0
    //   74: istore_2
    //   75: aload 4
    //   77: instanceof 119
    //   80: ifeq +41 -> 121
    //   83: aload 4
    //   85: checkcast 119	java/lang/RuntimeException
    //   88: athrow
    //   89: astore_3
    //   90: iload_2
    //   91: ifeq +17 -> 108
    //   94: aload_0
    //   95: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   98: aload_1
    //   99: iconst_1
    //   100: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   103: aload_0
    //   104: aload_1
    //   105: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   108: aload_3
    //   109: athrow
    //   110: aload_0
    //   111: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   114: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   117: pop
    //   118: goto -43 -> 75
    //   121: aload 4
    //   123: instanceof 196
    //   126: ifeq +9 -> 135
    //   129: aload 4
    //   131: checkcast 196	ParseException
    //   134: athrow
    //   135: aload 4
    //   137: checkcast 326	java/lang/Error
    //   140: athrow
    //
    // Exception table:
    //   from	to	target	type
    //   25	40	59	java/lang/Throwable
    //   25	40	89	finally
    //   65	89	89	finally
    //   110	141	89	finally
  }

  // ERROR //
  public final void address()
    throws ParseException
  {
    // Byte code:
    //   0: new 329	org/apache/james/mime4j/field/address/parser/ASTaddress
    //   3: dup
    //   4: iconst_2
    //   5: invokespecial 330	org/apache/james/mime4j/field/address/parser/ASTaddress:<init>	(I)V
    //   8: astore_1
    //   9: iconst_1
    //   10: istore_2
    //   11: aload_0
    //   12: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   15: aload_1
    //   16: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   19: aload_0
    //   20: aload_1
    //   21: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   24: aload_0
    //   25: ldc_w 331
    //   28: invokespecial 333	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_2_1	(I)Z
    //   31: ifeq +26 -> 57
    //   34: aload_0
    //   35: invokevirtual 335	org/apache/james/mime4j/field/address/parser/AddressListParser:addr_spec	()V
    //   38: iload_2
    //   39: ifeq +17 -> 56
    //   42: aload_0
    //   43: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   46: aload_1
    //   47: iconst_1
    //   48: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   51: aload_0
    //   52: aload_1
    //   53: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   56: return
    //   57: aload_0
    //   58: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   61: bipush 255
    //   63: if_icmpne +88 -> 151
    //   66: aload_0
    //   67: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   70: istore 6
    //   72: goto +196 -> 268
    //   75: aload_0
    //   76: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   79: iconst_5
    //   80: aload_0
    //   81: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   84: iastore
    //   85: aload_0
    //   86: bipush 255
    //   88: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   91: pop
    //   92: new 196	ParseException
    //   95: dup
    //   96: invokespecial 338	ParseException:<init>	()V
    //   99: athrow
    //   100: astore 4
    //   102: iload_2
    //   103: ifeq +134 -> 237
    //   106: aload_0
    //   107: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   110: aload_1
    //   111: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   114: iconst_0
    //   115: istore_2
    //   116: aload 4
    //   118: instanceof 119
    //   121: ifeq +127 -> 248
    //   124: aload 4
    //   126: checkcast 119	java/lang/RuntimeException
    //   129: athrow
    //   130: astore_3
    //   131: iload_2
    //   132: ifeq +17 -> 149
    //   135: aload_0
    //   136: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   139: aload_1
    //   140: iconst_1
    //   141: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   144: aload_0
    //   145: aload_1
    //   146: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   149: aload_3
    //   150: athrow
    //   151: aload_0
    //   152: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   155: istore 6
    //   157: goto +111 -> 268
    //   160: aload_0
    //   161: invokevirtual 341	org/apache/james/mime4j/field/address/parser/AddressListParser:angle_addr	()V
    //   164: goto -126 -> 38
    //   167: aload_0
    //   168: invokevirtual 344	org/apache/james/mime4j/field/address/parser/AddressListParser:phrase	()V
    //   171: aload_0
    //   172: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   175: bipush 255
    //   177: if_icmpne +37 -> 214
    //   180: aload_0
    //   181: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   184: istore 7
    //   186: goto +118 -> 304
    //   189: aload_0
    //   190: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   193: iconst_4
    //   194: aload_0
    //   195: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   198: iastore
    //   199: aload_0
    //   200: bipush 255
    //   202: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   205: pop
    //   206: new 196	ParseException
    //   209: dup
    //   210: invokespecial 338	ParseException:<init>	()V
    //   213: athrow
    //   214: aload_0
    //   215: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   218: istore 7
    //   220: goto +84 -> 304
    //   223: aload_0
    //   224: invokevirtual 347	org/apache/james/mime4j/field/address/parser/AddressListParser:group_body	()V
    //   227: goto -189 -> 38
    //   230: aload_0
    //   231: invokevirtual 341	org/apache/james/mime4j/field/address/parser/AddressListParser:angle_addr	()V
    //   234: goto -196 -> 38
    //   237: aload_0
    //   238: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   241: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   244: pop
    //   245: goto -129 -> 116
    //   248: aload 4
    //   250: instanceof 196
    //   253: ifeq +9 -> 262
    //   256: aload 4
    //   258: checkcast 196	ParseException
    //   261: athrow
    //   262: aload 4
    //   264: checkcast 326	java/lang/Error
    //   267: athrow
    //   268: iload 6
    //   270: lookupswitch	default:+-195->75, 6:+-110->160, 14:+-103->167, 31:+-103->167
    //   305: iconst_4
    //   306: tableswitch	default:+-117 -> 189, 4:+-83->223, 5:+-117->189, 6:+-76->230
    //
    // Exception table:
    //   from	to	target	type
    //   24	38	100	java/lang/Throwable
    //   57	100	100	java/lang/Throwable
    //   151	234	100	java/lang/Throwable
    //   24	38	130	finally
    //   57	100	130	finally
    //   106	130	130	finally
    //   151	234	130	finally
    //   237	268	130	finally
  }

  // ERROR //
  public final void address_list()
    throws ParseException
  {
    // Byte code:
    //   0: new 350	org/apache/james/mime4j/field/address/parser/ASTaddress_list
    //   3: dup
    //   4: iconst_1
    //   5: invokespecial 351	org/apache/james/mime4j/field/address/parser/ASTaddress_list:<init>	(I)V
    //   8: astore_1
    //   9: iconst_1
    //   10: istore_2
    //   11: aload_0
    //   12: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   15: aload_1
    //   16: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   19: aload_0
    //   20: aload_1
    //   21: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   24: aload_0
    //   25: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   28: bipush 255
    //   30: if_icmpne +69 -> 99
    //   33: aload_0
    //   34: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   37: istore 6
    //   39: goto +220 -> 259
    //   42: aload_0
    //   43: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   46: iconst_1
    //   47: aload_0
    //   48: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   51: iastore
    //   52: aload_0
    //   53: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   56: bipush 255
    //   58: if_icmpne +108 -> 166
    //   61: aload_0
    //   62: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   65: istore 7
    //   67: goto +229 -> 296
    //   70: aload_0
    //   71: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   74: iconst_2
    //   75: aload_0
    //   76: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   79: iastore
    //   80: iload_2
    //   81: ifeq +17 -> 98
    //   84: aload_0
    //   85: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   88: aload_1
    //   89: iconst_1
    //   90: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   93: aload_0
    //   94: aload_1
    //   95: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   98: return
    //   99: aload_0
    //   100: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   103: istore 6
    //   105: goto +154 -> 259
    //   108: aload_0
    //   109: invokevirtual 353	org/apache/james/mime4j/field/address/parser/AddressListParser:address	()V
    //   112: goto -60 -> 52
    //   115: astore 4
    //   117: iload_2
    //   118: ifeq +110 -> 228
    //   121: aload_0
    //   122: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   125: aload_1
    //   126: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   129: iconst_0
    //   130: istore_2
    //   131: aload 4
    //   133: instanceof 119
    //   136: ifeq +103 -> 239
    //   139: aload 4
    //   141: checkcast 119	java/lang/RuntimeException
    //   144: athrow
    //   145: astore_3
    //   146: iload_2
    //   147: ifeq +17 -> 164
    //   150: aload_0
    //   151: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   154: aload_1
    //   155: iconst_1
    //   156: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   159: aload_0
    //   160: aload_1
    //   161: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   164: aload_3
    //   165: athrow
    //   166: aload_0
    //   167: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   170: istore 7
    //   172: goto +124 -> 296
    //   175: aload_0
    //   176: iconst_3
    //   177: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   180: pop
    //   181: aload_0
    //   182: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   185: bipush 255
    //   187: if_icmpne +25 -> 212
    //   190: aload_0
    //   191: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   194: istore 9
    //   196: goto +120 -> 316
    //   199: aload_0
    //   200: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   203: iconst_3
    //   204: aload_0
    //   205: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   208: iastore
    //   209: goto -157 -> 52
    //   212: aload_0
    //   213: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   216: istore 9
    //   218: goto +98 -> 316
    //   221: aload_0
    //   222: invokevirtual 353	org/apache/james/mime4j/field/address/parser/AddressListParser:address	()V
    //   225: goto -173 -> 52
    //   228: aload_0
    //   229: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   232: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   235: pop
    //   236: goto -105 -> 131
    //   239: aload 4
    //   241: instanceof 196
    //   244: ifeq +9 -> 253
    //   247: aload 4
    //   249: checkcast 196	ParseException
    //   252: athrow
    //   253: aload 4
    //   255: checkcast 326	java/lang/Error
    //   258: athrow
    //   259: iload 6
    //   261: lookupswitch	default:+-219->42, 6:+-153->108, 14:+-153->108, 31:+-153->108
    //   297: iconst_4
    //   298: tableswitch	default:+-228 -> 70, 3:+-123->175
    //   317: lconst_0
    //   318: lookupswitch	default:+-119->199, 6:+-97->221, 14:+-97->221, 31:+-97->221
    //
    // Exception table:
    //   from	to	target	type
    //   24	80	115	java/lang/Throwable
    //   99	112	115	java/lang/Throwable
    //   166	225	115	java/lang/Throwable
    //   24	80	145	finally
    //   99	112	145	finally
    //   121	145	145	finally
    //   166	225	145	finally
    //   228	259	145	finally
  }

  // ERROR //
  public final void angle_addr()
    throws ParseException
  {
    // Byte code:
    //   0: new 355	org/apache/james/mime4j/field/address/parser/ASTangle_addr
    //   3: dup
    //   4: bipush 6
    //   6: invokespecial 356	org/apache/james/mime4j/field/address/parser/ASTangle_addr:<init>	(I)V
    //   9: astore_1
    //   10: iconst_1
    //   11: istore_2
    //   12: aload_0
    //   13: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   16: aload_1
    //   17: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   20: aload_0
    //   21: aload_1
    //   22: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   25: aload_0
    //   26: bipush 6
    //   28: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   31: pop
    //   32: aload_0
    //   33: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   36: bipush 255
    //   38: if_icmpne +53 -> 91
    //   41: aload_0
    //   42: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   45: istore 7
    //   47: goto +142 -> 189
    //   50: aload_0
    //   51: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   54: bipush 10
    //   56: aload_0
    //   57: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   60: iastore
    //   61: aload_0
    //   62: invokevirtual 335	org/apache/james/mime4j/field/address/parser/AddressListParser:addr_spec	()V
    //   65: aload_0
    //   66: bipush 7
    //   68: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   71: pop
    //   72: iload_2
    //   73: ifeq +17 -> 90
    //   76: aload_0
    //   77: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   80: aload_1
    //   81: iconst_1
    //   82: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   85: aload_0
    //   86: aload_1
    //   87: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   90: return
    //   91: aload_0
    //   92: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   95: istore 7
    //   97: goto +92 -> 189
    //   100: aload_0
    //   101: invokevirtual 359	org/apache/james/mime4j/field/address/parser/AddressListParser:route	()V
    //   104: goto -43 -> 61
    //   107: astore 4
    //   109: iload_2
    //   110: ifeq +48 -> 158
    //   113: aload_0
    //   114: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   117: aload_1
    //   118: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   121: iconst_0
    //   122: istore_2
    //   123: aload 4
    //   125: instanceof 119
    //   128: ifeq +41 -> 169
    //   131: aload 4
    //   133: checkcast 119	java/lang/RuntimeException
    //   136: athrow
    //   137: astore_3
    //   138: iload_2
    //   139: ifeq +17 -> 156
    //   142: aload_0
    //   143: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   146: aload_1
    //   147: iconst_1
    //   148: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   151: aload_0
    //   152: aload_1
    //   153: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   156: aload_3
    //   157: athrow
    //   158: aload_0
    //   159: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   162: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   165: pop
    //   166: goto -43 -> 123
    //   169: aload 4
    //   171: instanceof 196
    //   174: ifeq +9 -> 183
    //   177: aload 4
    //   179: checkcast 196	ParseException
    //   182: athrow
    //   183: aload 4
    //   185: checkcast 326	java/lang/Error
    //   188: athrow
    //   189: iload 7
    //   191: tableswitch	default:+-141 -> 50, 8:+-91->100
    //
    // Exception table:
    //   from	to	target	type
    //   25	72	107	java/lang/Throwable
    //   91	104	107	java/lang/Throwable
    //   25	72	137	finally
    //   91	104	137	finally
    //   113	137	137	finally
    //   158	189	137	finally
  }

  public final void disable_tracing()
  {
  }

  public final void domain()
    throws ParseException
  {
    int i;
    ASTdomain localASTdomain = new ASTdomain(11);
    this.jjtree.openNodeScope(localASTdomain);
    jjtreeOpenNodeScope(localASTdomain);
    try
    {
      throw new ParseException();
    }
    finally
    {
      int j;
      int k;
      if (1 != 0)
      {
        this.jjtree.closeNodeScope(localASTdomain, true);
        jjtreeCloseNodeScope(localASTdomain);
      }
      throw localObject;
      i = this.jj_ntk;
      break label264:
      Token localToken = jj_consume_token(14);
      if (this.jj_ntk == -1)
      {
        j = jj_ntk();
        break label292:
        this.jj_la1[19] = this.jj_gen;
      }
      while (true)
      {
        while (true)
        {
          if (1 != 0)
          {
            this.jjtree.closeNodeScope(localASTdomain, true);
            jjtreeCloseNodeScope(localASTdomain);
          }
          return;
          j = this.jj_ntk;
          break label292:
          if (this.jj_ntk == -1)
          {
            k = jj_ntk();
            break label320:
            this.jj_la1[20] = this.jj_gen;
          }
          while (localToken.image.charAt(localToken.image.length() - 1) != '.')
          {
            throw new ParseException("Atoms in domain names must be separated by '.'");
            k = this.jj_ntk;
            break label320:
            localToken = jj_consume_token(9);
          }
          localToken = jj_consume_token(14);
        }
        jj_consume_token(18);
      }
      label264: switch (i)
      {
      default:
      case 14:
      case 18:
      }
      label292: switch (j)
      {
      default:
      case 9:
      case 14:
      }
      label320: switch (k)
      {
      default:
      case 9:
      }
    }
  }

  public final void enable_tracing()
  {
  }

  public ParseException generateParseException()
  {
    this.jj_expentries.removeAllElements();
    boolean[] arrayOfBoolean = new boolean[34];
    for (int i = 0; i < 34; ++i)
      arrayOfBoolean[i] = false;
    if (this.jj_kind >= 0)
    {
      arrayOfBoolean[this.jj_kind] = true;
      this.jj_kind = -1;
    }
    for (int j = 0; j < 22; ++j)
      if (this.jj_la1[j] == this.jj_gen)
        for (int i1 = 0; i1 < 32; ++i1)
        {
          if ((jj_la1_0[j] & 1 << i1) != 0)
            arrayOfBoolean[i1] = true;
          if ((jj_la1_1[j] & 1 << i1) != 0)
            arrayOfBoolean[(i1 + 32)] = true;
        }
    for (int k = 0; k < 34; ++k)
      if (arrayOfBoolean[k] != 0)
      {
        this.jj_expentry = new int[1];
        this.jj_expentry[0] = k;
        this.jj_expentries.addElement(this.jj_expentry);
      }
    this.jj_endpos = 0;
    jj_rescan_token();
    jj_add_error_token(0, 0);
    [I[] arrayOf[I = new int[this.jj_expentries.size()][];
    for (int l = 0; l < this.jj_expentries.size(); ++l)
      arrayOf[I[l] = ((int[])(int[])this.jj_expentries.elementAt(l));
    return new ParseException(this.token, arrayOf[I, tokenImage);
  }

  public final Token getNextToken()
  {
    if (this.token.next != null)
      this.token = this.token.next;
    while (true)
    {
      this.jj_ntk = -1;
      this.jj_gen = (1 + this.jj_gen);
      return this.token;
      Token localToken1 = this.token;
      Token localToken2 = this.token_source.getNextToken();
      localToken1.next = localToken2;
      this.token = localToken2;
    }
  }

  public final Token getToken(int paramInt)
  {
    Token localToken1;
    int i;
    Object localObject;
    Token localToken2;
    if (this.lookingAhead)
    {
      localToken1 = this.jj_scanpos;
      i = 0;
      localObject = localToken1;
      if (i >= paramInt)
        break label74;
      if (((Token)localObject).next == null)
        break label55;
      localToken2 = ((Token)localObject).next;
    }
    while (true)
    {
      while (true)
      {
        while (true)
        {
          ++i;
          localObject = localToken2;
        }
        localToken1 = this.token;
      }
      label55: localToken2 = this.token_source.getNextToken();
      ((Token)localObject).next = localToken2;
    }
    label74: return ((Token)localObject);
  }

  // ERROR //
  public final void group_body()
    throws ParseException
  {
    // Byte code:
    //   0: new 403	org/apache/james/mime4j/field/address/parser/ASTgroup_body
    //   3: dup
    //   4: iconst_5
    //   5: invokespecial 404	org/apache/james/mime4j/field/address/parser/ASTgroup_body:<init>	(I)V
    //   8: astore_1
    //   9: iconst_1
    //   10: istore_2
    //   11: aload_0
    //   12: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   15: aload_1
    //   16: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   19: aload_0
    //   20: aload_1
    //   21: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   24: aload_0
    //   25: iconst_4
    //   26: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   29: pop
    //   30: aload_0
    //   31: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   34: bipush 255
    //   36: if_icmpne +77 -> 113
    //   39: aload_0
    //   40: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   43: istore 7
    //   45: goto +229 -> 274
    //   48: aload_0
    //   49: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   52: bipush 7
    //   54: aload_0
    //   55: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   58: iastore
    //   59: aload_0
    //   60: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   63: bipush 255
    //   65: if_icmpne +115 -> 180
    //   68: aload_0
    //   69: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   72: istore 8
    //   74: goto +238 -> 312
    //   77: aload_0
    //   78: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   81: bipush 8
    //   83: aload_0
    //   84: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   87: iastore
    //   88: aload_0
    //   89: iconst_5
    //   90: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   93: pop
    //   94: iload_2
    //   95: ifeq +17 -> 112
    //   98: aload_0
    //   99: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   102: aload_1
    //   103: iconst_1
    //   104: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   107: aload_0
    //   108: aload_1
    //   109: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   112: return
    //   113: aload_0
    //   114: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   117: istore 7
    //   119: goto +155 -> 274
    //   122: aload_0
    //   123: invokevirtual 407	org/apache/james/mime4j/field/address/parser/AddressListParser:mailbox	()V
    //   126: goto -67 -> 59
    //   129: astore 4
    //   131: iload_2
    //   132: ifeq +111 -> 243
    //   135: aload_0
    //   136: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   139: aload_1
    //   140: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   143: iconst_0
    //   144: istore_2
    //   145: aload 4
    //   147: instanceof 119
    //   150: ifeq +104 -> 254
    //   153: aload 4
    //   155: checkcast 119	java/lang/RuntimeException
    //   158: athrow
    //   159: astore_3
    //   160: iload_2
    //   161: ifeq +17 -> 178
    //   164: aload_0
    //   165: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   168: aload_1
    //   169: iconst_1
    //   170: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   173: aload_0
    //   174: aload_1
    //   175: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   178: aload_3
    //   179: athrow
    //   180: aload_0
    //   181: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   184: istore 8
    //   186: goto +126 -> 312
    //   189: aload_0
    //   190: iconst_3
    //   191: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   194: pop
    //   195: aload_0
    //   196: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   199: bipush 255
    //   201: if_icmpne +26 -> 227
    //   204: aload_0
    //   205: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   208: istore 10
    //   210: goto +122 -> 332
    //   213: aload_0
    //   214: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   217: bipush 9
    //   219: aload_0
    //   220: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   223: iastore
    //   224: goto -165 -> 59
    //   227: aload_0
    //   228: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   231: istore 10
    //   233: goto +99 -> 332
    //   236: aload_0
    //   237: invokevirtual 407	org/apache/james/mime4j/field/address/parser/AddressListParser:mailbox	()V
    //   240: goto -181 -> 59
    //   243: aload_0
    //   244: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   247: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   250: pop
    //   251: goto -106 -> 145
    //   254: aload 4
    //   256: instanceof 196
    //   259: ifeq +9 -> 268
    //   262: aload 4
    //   264: checkcast 196	ParseException
    //   267: athrow
    //   268: aload 4
    //   270: checkcast 326	java/lang/Error
    //   273: athrow
    //   274: iload 7
    //   276: lookupswitch	default:+-228->48, 6:+-154->122, 14:+-154->122, 31:+-154->122
    //   313: iconst_5
    //   314: tableswitch	default:+-237 -> 77, 3:+-125->189
    //   333: lconst_1
    //   334: lookupswitch	default:+-121->213, 6:+-98->236, 14:+-98->236, 31:+-98->236
    //
    // Exception table:
    //   from	to	target	type
    //   24	94	129	java/lang/Throwable
    //   113	126	129	java/lang/Throwable
    //   180	240	129	java/lang/Throwable
    //   24	94	159	finally
    //   113	126	159	finally
    //   135	159	159	finally
    //   180	240	159	finally
    //   243	274	159	finally
  }

  void jjtreeCloseNodeScope(Node paramNode)
  {
    ((SimpleNode)paramNode).lastToken = getToken(0);
  }

  void jjtreeOpenNodeScope(Node paramNode)
  {
    ((SimpleNode)paramNode).firstToken = getToken(1);
  }

  public final void local_part()
    throws ParseException
  {
    int i;
    ASTlocal_part localASTlocal_part = new ASTlocal_part(10);
    this.jjtree.openNodeScope(localASTlocal_part);
    jjtreeOpenNodeScope(localASTlocal_part);
    try
    {
      throw new ParseException();
    }
    finally
    {
      int j;
      int k;
      int l;
      if (1 != 0)
      {
        this.jjtree.closeNodeScope(localASTlocal_part, true);
        jjtreeCloseNodeScope(localASTlocal_part);
      }
      throw localObject1;
      i = this.jj_ntk;
      break label343:
      Object localObject2 = jj_consume_token(14);
      while (true)
      {
        while (true)
        {
          while (this.jj_ntk == -1)
          {
            j = jj_ntk();
            break label372:
            this.jj_la1[16] = this.jj_gen;
            if (1 != 0)
            {
              this.jjtree.closeNodeScope(localASTlocal_part, true);
              jjtreeCloseNodeScope(localASTlocal_part);
            }
            return;
            localObject2 = jj_consume_token(31);
          }
          j = this.jj_ntk;
          break label372:
          if (this.jj_ntk == -1)
          {
            k = jj_ntk();
            break label408:
            this.jj_la1[17] = this.jj_gen;
          }
          while ((((Token)localObject2).kind == 31) || (((Token)localObject2).image.charAt(((Token)localObject2).image.length() - 1) != '.'))
          {
            throw new ParseException("Words in local part must be separated by '.'");
            k = this.jj_ntk;
            break label408:
            localObject2 = jj_consume_token(9);
          }
          if (this.jj_ntk == -1)
          {
            l = jj_ntk();
            break label428:
            this.jj_la1[18] = this.jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          l = this.jj_ntk;
          break label428:
          localObject2 = jj_consume_token(14);
        }
        Token localToken = jj_consume_token(31);
        localObject2 = localToken;
      }
      label343: switch (i)
      {
      default:
      case 14:
      case 31:
      }
      label372: switch (j)
      {
      default:
      case 9:
      case 14:
      case 31:
      }
      label408: switch (k)
      {
      default:
      case 9:
      }
      label428: switch (l)
      {
      default:
      case 14:
      case 31:
      }
    }
  }

  // ERROR //
  public final void mailbox()
    throws ParseException
  {
    // Byte code:
    //   0: new 422	org/apache/james/mime4j/field/address/parser/ASTmailbox
    //   3: dup
    //   4: iconst_3
    //   5: invokespecial 423	org/apache/james/mime4j/field/address/parser/ASTmailbox:<init>	(I)V
    //   8: astore_1
    //   9: iconst_1
    //   10: istore_2
    //   11: aload_0
    //   12: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   15: aload_1
    //   16: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   19: aload_0
    //   20: aload_1
    //   21: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   24: aload_0
    //   25: ldc_w 331
    //   28: invokespecial 425	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_2_2	(I)Z
    //   31: ifeq +26 -> 57
    //   34: aload_0
    //   35: invokevirtual 335	org/apache/james/mime4j/field/address/parser/AddressListParser:addr_spec	()V
    //   38: iload_2
    //   39: ifeq +17 -> 56
    //   42: aload_0
    //   43: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   46: aload_1
    //   47: iconst_1
    //   48: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   51: aload_0
    //   52: aload_1
    //   53: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   56: return
    //   57: aload_0
    //   58: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   61: bipush 255
    //   63: if_icmpne +89 -> 152
    //   66: aload_0
    //   67: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   70: istore 6
    //   72: goto +134 -> 206
    //   75: aload_0
    //   76: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   79: bipush 6
    //   81: aload_0
    //   82: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   85: iastore
    //   86: aload_0
    //   87: bipush 255
    //   89: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   92: pop
    //   93: new 196	ParseException
    //   96: dup
    //   97: invokespecial 338	ParseException:<init>	()V
    //   100: athrow
    //   101: astore 4
    //   103: iload_2
    //   104: ifeq +71 -> 175
    //   107: aload_0
    //   108: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   111: aload_1
    //   112: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   115: iconst_0
    //   116: istore_2
    //   117: aload 4
    //   119: instanceof 119
    //   122: ifeq +64 -> 186
    //   125: aload 4
    //   127: checkcast 119	java/lang/RuntimeException
    //   130: athrow
    //   131: astore_3
    //   132: iload_2
    //   133: ifeq +17 -> 150
    //   136: aload_0
    //   137: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   140: aload_1
    //   141: iconst_1
    //   142: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   145: aload_0
    //   146: aload_1
    //   147: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   150: aload_3
    //   151: athrow
    //   152: aload_0
    //   153: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   156: istore 6
    //   158: goto +48 -> 206
    //   161: aload_0
    //   162: invokevirtual 341	org/apache/james/mime4j/field/address/parser/AddressListParser:angle_addr	()V
    //   165: goto -127 -> 38
    //   168: aload_0
    //   169: invokevirtual 428	org/apache/james/mime4j/field/address/parser/AddressListParser:name_addr	()V
    //   172: goto -134 -> 38
    //   175: aload_0
    //   176: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   179: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   182: pop
    //   183: goto -66 -> 117
    //   186: aload 4
    //   188: instanceof 196
    //   191: ifeq +9 -> 200
    //   194: aload 4
    //   196: checkcast 196	ParseException
    //   199: athrow
    //   200: aload 4
    //   202: checkcast 326	java/lang/Error
    //   205: athrow
    //   206: iload 6
    //   208: lookupswitch	default:+-133->75, 6:+-47->161, 14:+-40->168, 31:+-40->168
    //
    // Exception table:
    //   from	to	target	type
    //   24	38	101	java/lang/Throwable
    //   57	101	101	java/lang/Throwable
    //   152	172	101	java/lang/Throwable
    //   24	38	131	finally
    //   57	101	131	finally
    //   107	131	131	finally
    //   152	172	131	finally
    //   175	206	131	finally
  }

  // ERROR //
  public final void name_addr()
    throws ParseException
  {
    // Byte code:
    //   0: new 430	org/apache/james/mime4j/field/address/parser/ASTname_addr
    //   3: dup
    //   4: iconst_4
    //   5: invokespecial 431	org/apache/james/mime4j/field/address/parser/ASTname_addr:<init>	(I)V
    //   8: astore_1
    //   9: iconst_1
    //   10: istore_2
    //   11: aload_0
    //   12: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   15: aload_1
    //   16: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   19: aload_0
    //   20: aload_1
    //   21: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   24: aload_0
    //   25: invokevirtual 344	org/apache/james/mime4j/field/address/parser/AddressListParser:phrase	()V
    //   28: aload_0
    //   29: invokevirtual 341	org/apache/james/mime4j/field/address/parser/AddressListParser:angle_addr	()V
    //   32: iload_2
    //   33: ifeq +17 -> 50
    //   36: aload_0
    //   37: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   40: aload_1
    //   41: iconst_1
    //   42: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   45: aload_0
    //   46: aload_1
    //   47: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   50: return
    //   51: astore 4
    //   53: iload_2
    //   54: ifeq +48 -> 102
    //   57: aload_0
    //   58: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   61: aload_1
    //   62: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   65: iconst_0
    //   66: istore_2
    //   67: aload 4
    //   69: instanceof 119
    //   72: ifeq +41 -> 113
    //   75: aload 4
    //   77: checkcast 119	java/lang/RuntimeException
    //   80: athrow
    //   81: astore_3
    //   82: iload_2
    //   83: ifeq +17 -> 100
    //   86: aload_0
    //   87: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   90: aload_1
    //   91: iconst_1
    //   92: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   95: aload_0
    //   96: aload_1
    //   97: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   100: aload_3
    //   101: athrow
    //   102: aload_0
    //   103: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   106: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   109: pop
    //   110: goto -43 -> 67
    //   113: aload 4
    //   115: instanceof 196
    //   118: ifeq +9 -> 127
    //   121: aload 4
    //   123: checkcast 196	ParseException
    //   126: athrow
    //   127: aload 4
    //   129: checkcast 326	java/lang/Error
    //   132: athrow
    //
    // Exception table:
    //   from	to	target	type
    //   24	32	51	java/lang/Throwable
    //   24	32	81	finally
    //   57	81	81	finally
    //   102	133	81	finally
  }

  public ASTaddress_list parse()
    throws ParseException
  {
    try
    {
      parseAll();
      ASTaddress_list localASTaddress_list = (ASTaddress_list)this.jjtree.rootNode();
      return localASTaddress_list;
    }
    catch (TokenMgrError localTokenMgrError)
    {
      throw new ParseException(localTokenMgrError.getMessage());
    }
  }

  public final void parseAll()
    throws ParseException
  {
    address_list();
    jj_consume_token(0);
  }

  public final void parseLine()
    throws ParseException
  {
    int i;
    address_list();
    if (this.jj_ntk == -1)
    {
      i = jj_ntk();
      switch (i)
      {
      default:
        this.jj_la1[0] = this.jj_gen;
      case 1:
      }
    }
    while (true)
    {
      while (true)
      {
        jj_consume_token(2);
        return;
        i = this.jj_ntk;
      }
      jj_consume_token(1);
    }
  }

  public final void phrase()
    throws ParseException
  {
    int i;
    ASTphrase localASTphrase = new ASTphrase(8);
    this.jjtree.openNodeScope(localASTphrase);
    jjtreeOpenNodeScope(localASTphrase);
    try
    {
      throw new ParseException();
    }
    finally
    {
      if (1 != 0)
      {
        this.jjtree.closeNodeScope(localASTphrase, true);
        jjtreeCloseNodeScope(localASTphrase);
      }
      throw localObject;
      i = this.jj_ntk;
      break label169:
      jj_consume_token(14);
      while (this.jj_ntk == -1)
      {
        j = jj_ntk();
        break label196:
        this.jj_la1[14] = this.jj_gen;
        if (1 != 0)
        {
          this.jjtree.closeNodeScope(localASTphrase, true);
          jjtreeCloseNodeScope(localASTphrase);
        }
        return;
        jj_consume_token(31);
      }
      int j = this.jj_ntk;
      label169: switch (i)
      {
      default:
      case 14:
      case 31:
      }
      label196: switch (j)
      {
      case 14:
      case 31:
      }
    }
  }

  // ERROR //
  public final void route()
    throws ParseException
  {
    // Byte code:
    //   0: new 449	org/apache/james/mime4j/field/address/parser/ASTroute
    //   3: dup
    //   4: bipush 7
    //   6: invokespecial 450	org/apache/james/mime4j/field/address/parser/ASTroute:<init>	(I)V
    //   9: astore_1
    //   10: iconst_1
    //   11: istore_2
    //   12: aload_0
    //   13: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   16: aload_1
    //   17: invokevirtual 300	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:openNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   20: aload_0
    //   21: aload_1
    //   22: invokevirtual 303	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeOpenNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   25: aload_0
    //   26: bipush 8
    //   28: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   31: pop
    //   32: aload_0
    //   33: invokevirtual 311	org/apache/james/mime4j/field/address/parser/AddressListParser:domain	()V
    //   36: aload_0
    //   37: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   40: bipush 255
    //   42: if_icmpne +48 -> 90
    //   45: aload_0
    //   46: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   49: istore 7
    //   51: goto +188 -> 239
    //   54: aload_0
    //   55: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   58: bipush 11
    //   60: aload_0
    //   61: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   64: iastore
    //   65: aload_0
    //   66: iconst_4
    //   67: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   70: pop
    //   71: iload_2
    //   72: ifeq +17 -> 89
    //   75: aload_0
    //   76: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   79: aload_1
    //   80: iconst_1
    //   81: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   84: aload_0
    //   85: aload_1
    //   86: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   89: return
    //   90: aload_0
    //   91: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   94: istore 7
    //   96: goto +143 -> 239
    //   99: aload_0
    //   100: iconst_3
    //   101: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   104: pop
    //   105: aload_0
    //   106: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   109: bipush 255
    //   111: if_icmpne +88 -> 199
    //   114: aload_0
    //   115: invokespecial 337	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	()I
    //   118: istore 8
    //   120: goto +148 -> 268
    //   123: aload_0
    //   124: getfield 74	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_la1	[I
    //   127: bipush 12
    //   129: aload_0
    //   130: getfield 117	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_gen	I
    //   133: iastore
    //   134: aload_0
    //   135: bipush 8
    //   137: invokespecial 308	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_consume_token	(I)Lorg/apache/james/mime4j/field/address/parser/Token;
    //   140: pop
    //   141: aload_0
    //   142: invokevirtual 311	org/apache/james/mime4j/field/address/parser/AddressListParser:domain	()V
    //   145: goto -109 -> 36
    //   148: astore 4
    //   150: iload_2
    //   151: ifeq +57 -> 208
    //   154: aload_0
    //   155: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   158: aload_1
    //   159: invokevirtual 321	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:clearNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   162: iconst_0
    //   163: istore_2
    //   164: aload 4
    //   166: instanceof 119
    //   169: ifeq +50 -> 219
    //   172: aload 4
    //   174: checkcast 119	java/lang/RuntimeException
    //   177: athrow
    //   178: astore_3
    //   179: iload_2
    //   180: ifeq +17 -> 197
    //   183: aload_0
    //   184: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   187: aload_1
    //   188: iconst_1
    //   189: invokevirtual 315	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:closeNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;Z)V
    //   192: aload_0
    //   193: aload_1
    //   194: invokevirtual 318	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtreeCloseNodeScope	(Lorg/apache/james/mime4j/field/address/parser/Node;)V
    //   197: aload_3
    //   198: athrow
    //   199: aload_0
    //   200: getfield 115	org/apache/james/mime4j/field/address/parser/AddressListParser:jj_ntk	I
    //   203: istore 8
    //   205: goto +63 -> 268
    //   208: aload_0
    //   209: getfield 70	org/apache/james/mime4j/field/address/parser/AddressListParser:jjtree	Lorg/apache/james/mime4j/field/address/parser/JJTAddressListParserState;
    //   212: invokevirtual 324	org/apache/james/mime4j/field/address/parser/JJTAddressListParserState:popNode	()Lorg/apache/james/mime4j/field/address/parser/Node;
    //   215: pop
    //   216: goto -52 -> 164
    //   219: aload 4
    //   221: instanceof 196
    //   224: ifeq +9 -> 233
    //   227: aload 4
    //   229: checkcast 196	ParseException
    //   232: athrow
    //   233: aload 4
    //   235: checkcast 326	java/lang/Error
    //   238: athrow
    //   239: iload 7
    //   241: lookupswitch	default:+-187->54, 3:+-136->105, 8:+-136->105
    //   269: iconst_5
    //   270: tableswitch	default:+-147 -> 123, 3:+-171->99
    //
    // Exception table:
    //   from	to	target	type
    //   25	71	148	java/lang/Throwable
    //   90	145	148	java/lang/Throwable
    //   199	205	148	java/lang/Throwable
    //   25	71	178	finally
    //   90	145	178	finally
    //   154	178	178	finally
    //   199	205	178	finally
    //   208	239	178	finally
  }

  static final class JJCalls
  {
    int arg;
    Token first;
    int gen;
    JJCalls next;
  }

  private static final class LookaheadSuccess extends Error
  {
  }
}